package com.caoji;


import java.util.Scanner;

import org.apache.commons.lang3.StringUtils;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class CodeGenerator {

	/**
	 * <p>
	 * 读取控制台内容
	 * </p>
	 */
	public static String scanner(String tip) {
		Scanner scanner = new Scanner(System.in);
		StringBuilder help = new StringBuilder();
		help.append("请输入" + tip + "：");
		System.out.println(help.toString());
		if (scanner.hasNext()) {
			String ipt = scanner.next();
			if (StringUtils.isNotEmpty(ipt)) {
				return ipt;
			}
		}
		throw new MybatisPlusException("请输入正确的" + tip + "！");
	}



	public static void main(String[] args) {

		//////////// 使用代码生成器 ////////////
		AutoGenerator mpg = new AutoGenerator();

		//////////// 使用全局配置 ////////////
		GlobalConfig gc = new GlobalConfig();
		// 获取项目路径
		String projectPath = System.getProperty("user.dir");
		// 生成文件的输出目录
		gc.setOutputDir(projectPath + "/src/main/java");
		// 作者
		gc.setAuthor("caoji");
		// 开启 swagger2 模式
//		gc.setSwagger2(true);
		// 是否打开输出目录
		gc.setOpen(true);
		// 指定生成的主键的ID类型
		gc.setIdType(IdType.AUTO);
		// 如果有同名文件，是否覆盖
		gc.setFileOverride(true);
		// 设置给到代码生成器
		mpg.setGlobalConfig(gc);

		//////////// 数据源配置 ////////////
		DataSourceConfig dsc = new DataSourceConfig();
		// 选择使用 MySQL
		dsc.setDbType(DbType.MYSQL);
		dsc.setUrl("jdbc:mysql:///cloud_user?useSSL=false&useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE&serverTimezone=Hongkong&allowMultiQueries=true");
		dsc.setDriverName("com.mysql.cj.jdbc.Driver");
		dsc.setUsername("root");
		dsc.setPassword("123456");
		mpg.setDataSource(dsc);

		//////////// 包配置 ////////////
		PackageConfig pc = new PackageConfig();
		pc.setParent("com.caoji");
		mpg.setPackageInfo(pc);

		//////////// 策略配置 ////////////
		StrategyConfig strategy = new StrategyConfig();
		// 表名（驼峰命名）
		strategy.setNaming(NamingStrategy.underline_to_camel);
		// 设置表前缀
		strategy.setTablePrefix("tb_");
		// 字段命名
		strategy.setColumnNaming(NamingStrategy.underline_to_camel);
		// 【实体】是否为lombok模型（默认 false）
		strategy.setEntityLombokModel(true);
		// 生成 <code>@RestController</code> 控制器
		strategy.setRestControllerStyle(true);
//		strategy.setInclude("t_device","t_energy","t_user");
		strategy.setInclude("tb_user");
		mpg.setStrategy(strategy);
		mpg.execute();
	}
}
